home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 January - Disc 2 / Macworld (1999-01) (Disk 2).dmg / Serious Demos / Symbolic Composer 4.2 / Environment / System / SOLAR / Vector Processors / Analyze / analyze-spectrum next >
Lisp/Scheme  |  1998-10-23  |  1KB  |  37 lines

  1. analyze-spectrum vector
  2.  
  3. Analyzes the frequency content of the waveform store in vector. Returns a vector where nth element represents the amplitude of the nth frequency. Note that the input vector length must be (expt 2 n), like 64, 128, 256, 512. The analyze-spectrum output can directly be drawn in visualizer showing you the amounts of each frequency.
  4.  
  5. (setq spectrum
  6.   (analyze-spectrum
  7.     (gen-fourier 
  8.      '(1 3 5) ; frequencies 1, 2 and 3
  9.      '(1 0.5 0.25) ; amplitudes - also contours allowed
  10.      '(0 0 0) ; initial phases
  11.      512)))
  12.  
  13. (aref spectrum 1) ; frequency 1
  14. --> 1.0
  15.  
  16. (aref spectrum 2) ; frequency 2
  17. --> 0.0
  18.  
  19. (aref spectrum 3) ; frequency 3
  20. --> 0.5
  21.  
  22. (aref spectrum 4) ; frequency 4
  23. --> 0.0
  24.  
  25. (aref spectrum 5) ; frequency 5
  26. --> 0.25
  27.  
  28. If you are having a vector whose length is not (expt 2 n) then use vector-quantize before applying analyze-spectrum. You can get interesting monotoneus melodies from symbol fractal spectrum. Visualize the following.
  29.  
  30. (initdef)
  31. (defsym a '(a b c))
  32. (defsym b '(c b a))
  33. (defsym c '(a c b))
  34. (setq vector (symbol-to-vector (gen-trans a 7)))
  35. (analyze-spectrum
  36.   (vector-quantize 256 512 vector))
  37.